home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MPEG Toolkit
/
MPEG Toolkit.iso
/
dos
/
mpgcodec
/
makempg.txt
< prev
next >
Wrap
Text File
|
1997-01-01
|
3KB
|
115 lines
Hi All you Eager MPEG Makers, here is how to port the PVRG MPEG
encoder/decoder to DOS/PC (386).
Tools required:
Well the ones that I used.
GNU C version 2.2.2
GREP or some other file search util
An uncompress util for UNIX .Z files
An untar for UNIX tar files
Text Editor (sorry some code needs tweaked)
Source required:
/pub/mpeg/MPEGv1.1.tar.Z
from havefun.stanford.edu
/pub/mpeg/MPEGDOCv1.1.tar.Z
from havefun.stanford.edu
Step 1
Decompress the .Z files
Step 2
Untar the resulting tar files.
Note that 2 of the file names won't fit in the DOS 8 and 3 name format:
transform.c truncates to transfor.c
prototype.h truncates to prototyp.h
Step 3
Search the C files for fopen and alter the mode to binary. The 2
sections below were produced by GREP.
BEFORE
*** FILE mem.c:
if ((inp = fopen(filename,"r")) == NULL)
if ((inp = fopen(filename,"r")) == NULL)
if ((out = fopen(filename,"w")) == NULL)
if ((out = fopen(filename,"w")) == NULL)
*** FILE mpeg.c:
if ((test = fopen(CFrame->ComponentFileName[i],"r")) == NULL)
*** FILE stream.c:
if ((srin = fopen(filename,"r")) == NULL)
if ((swout = fopen(filename,"w+")) == NULL)
AFTER
*** FILE mem.c:
if ((inp = fopen(filename,"rb")) == NULL)
if ((inp = fopen(filename,"rb")) == NULL)
if ((out = fopen(filename,"wb")) == NULL)
if ((out = fopen(filename,"wb")) == NULL)
*** FILE mpeg.c:
if ((test = fopen(CFrame->ComponentFileName[i],"rb")) == NULL)
*** FILE stream.c:
if ((srin = fopen(filename,"rb")) == NULL)
if ((swout = fopen(filename,"wb+")) == NULL)
Step 4
This is an odd one and may only be needed for GNU C v 2.2.2. The file
lexer.c uses the rint function (round to nearest integer), my copy of
GNU C has rint in the math header but not in the object library ? So
my fix is to use floor(x+0.5) instead. Search lexer.c for R_ROUND until
you see the BEFORE section below and edit it to look like the AFTER
section.
BEFORE
case R_ROUND:
accum = *(--DataPtr);
*(DataPtr++) = rint(accum);
break;
AFTER
case R_ROUND:
accum = *(--DataPtr);
*(DataPtr++) = floor(accum+0.5);
break;
Step 5
Compile all 12 files to *.o using the following example command line
GCC.
GCC -O -c chendct.c
Ignore the warning from lexer.c and tranfor.c about implicit
decleration.
Step 6
Link all the files together to form MPEG
gcc lexer.o mpeg.o huffman.o transfor.o codec.o io.o marker.o
me.o mem.o stat.o stream.o chendct.o -lgcc -lm -o mpeg
Note all one line
Step 7
Create MPEG.EXE
aout2exe mpeg mpeg.exe
Step 8
Use and enjoy and send me a mail message to let me know how you get on
and any mpegs that you create (I am broad minded !).
Graham Logan
mitgml@dct.ac.uk